package org.ccay.core.encrypt;

/**
 * 加密接口
 * <p/>
 * 对于 Aes 算法， 请使用如下方式：
 * <pre>
 * <code>
 * &#064;Inject 
 * &#064;Named("aes") 
 * private IEncryption enc;
 * </code>
 * </pre>
 * 加密接口
 * <p/>
 * 对于 sha1 算法， 请使用如下方式：
 * <pre>
 * <code>
 * &#064;Inject 
 * &#064;Named("sha1") 
 * private IEncryption enc;
 * </code>
 * </pre>
 * @author chaowangbang
 * @since 2011-8-27
 */
public interface IEncryption {
	/**
	 * 加密
	 * @param originalString 原字符串
	 * @param key 密钥 (对于AES算法，由于对KEY长度有要求，要有使用EncryptUtil.toKey方法进行KEY的转换)
	 * @return 加密结果
	 */
	public String encrypt(String originalString,String key);
	/**
	 * 使用默认KEY加密，不建议使用此接口。
	 * @param originalString 原字符串
	 * @return 加密结果
	 */
	public String encrypt(String originalString);
	/**
	 * 生成随机密钥
	 * @author chaowangbang
	 * @since 2011-11-1
	 * @return 随机密钥
	 */
	public String generationRandomKey();
	/** 生成随机密钥	
	 * @author chaowangbang
	 * @since 2011-11-2
	 * @param length 密钥长度
	 * @return 随机密钥
	 */
	public String generationRandomKey(int length);
	
}
